package com.itbaizhan.springsecuritydemo.config;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.web.authentication.rememberme.JdbcTokenRepositoryImpl;
import org.springframework.security.web.authentication.rememberme.PersistentTokenRepository;

import javax.sql.DataSource;
/*记住我配置类*/
@Configuration
public class RememberMeConfig {
    /*Remember me  连接数据库*/
    //不一定是mysql驱动数据库，spring里的repository也可以连接数据库
    //数据源
    @Autowired
    private DataSource dataSource;

    //令牌Repository
    @Bean
    public PersistentTokenRepository getpersistentTokenRepository(){
        //为spring security自带的令牌控制器设置数据源
        JdbcTokenRepositoryImpl jdbcTokenRepository = new JdbcTokenRepositoryImpl();
        jdbcTokenRepository.setDataSource(dataSource);

        //自动创建令牌，第一次启动时需要，第二次启动时需要注释  否则报错
       // jdbcTokenRepository.setCreateTableOnStartup(true);
        return  jdbcTokenRepository;
    }

}
/*Spring Security中Remember Me为“记住我”功能，
即下次访问系统时无需重新登录。当使用“记住我”功能登录后，
Spring Security会生成一个令牌，令牌一方面保存到数据库中，
另一方面生成一个叫remember-me的Cookie保存到客户端。
之后客户端访问项目时自动携带令牌，不登录即可完成认证*/